package com.example.lucky.draw.user.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;

import java.util.Arrays;
import java.util.List;

@RestController
public class TestController {

    /**
     * Mono是Reactive Streams规范中的一种数据类型，它代表一个异步序列的元素。
     */
    @GetMapping("/test")
    public Mono<String> test() {
        /**
         * Mono.just（），创建了一个包含单个mono对象的方法，并返回该对象。
         */
        return Mono.just(null);
    }

    @GetMapping("/test-justOrEmpty")
    public Mono<String> testJustOrEmpty() {
        /**
         * 如果传入的值不为空，则返回Mono.just(value)，否则返回一个空的Mono对象。
         */
        return Mono.justOrEmpty(null);
    }

    @GetMapping("/test-fluxJust")
    public Flux<String> testFluxJust() {
        return Flux.just("卫老师","闫鹏宇老师","帅气的老李");
    }

    @GetMapping("/test-fluxFromIterable")
    public Flux<String> testFluxFromIterable() {
        List<String> stringList = Arrays.asList("卫老师", "闫鹏宇老师", "帅气的老李");
        return Flux.fromIterable(stringList);
    }

    @GetMapping("/test-empty")
    public Flux<String> testEmpty() {
        return Flux.empty();
    }

    @GetMapping("/test-range")
    public Flux<Integer> testRange() {
        return Flux.range(1, 10);
    }

}
